﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CrystalDecisions;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using BibliotecaClases;

namespace Parque
{
    public partial class FNoticias : Form
    {
        public ENNoticias noticia;

        public FNoticias()
        {
            InitializeComponent();
        }

        private void FNoticias_Load(object sender, EventArgs e)
        {
            LimpiarFNoticias();
            MostrarTodasNoticias();
        }

        private void MostrarTodasNoticias() 
        {
            ENNoticias not = new ENNoticias();
            DataSet resultado = new DataSet();
            resultado = not.ObtenerTodasNoticias();
            DGVNoticias.DataSource = resultado.Tables["Noticias"].DefaultView;
            DGVNoticias.ColumnHeadersDefaultCellStyle.Font = new Font("Tahoma", 10, FontStyle.Bold);
            DGVNoticias.DefaultCellStyle.Font = new Font("Tahoma", 11);
            DGVNoticias.Columns[0].Visible = false;
            DGVNoticias.Columns[1].HeaderText = "Titulo";
            DGVNoticias.Columns[1].Width = 200;
            DGVNoticias.Columns[2].HeaderText = "Descripcion";
            DGVNoticias.Columns[2].Width = 750;
            DGVNoticias.Columns[3].HeaderText = "Fecha";
            DGVNoticias.Columns[3].Width = 100;
            DGVNoticias.Columns[4].Visible = false;
            DGVNoticias.Columns[5].Visible = false;
            DGVNoticias.Columns[6].Visible = false;
            DGVNoticias.Columns[7].Visible = false;
            DGVNoticias.Columns[8].Visible = false;
            DGVNoticias.Columns[9].Visible = false;
            LTotalNoticias.Text = "Nº Total de noticias : " + resultado.Tables[0].Rows.Count.ToString();
        }

        private void LimpiarFNoticias()
        {
            TBTitulo.Text = "";
            RTBDescripcion.Text = "";
            CBAdministrador.Checked = false;
            CBAnimador.Checked = false;
            CBMecanico.Checked = false;
            CBTodos.Checked = false;
            CBVendedor.Checked = false;
            CBWeb.Checked = false;
            BTEliminar.Enabled = false;
        }

        private void BTGuardar_Click(object sender, EventArgs e)
        {
            ClaseValidacion validar;
            validar = new ClaseValidacion();
            bool correcto = true, gbAdministrador = true, gbVendedor = true, gbMecanico = true, gbAnimador = true, gbWeb = true, gbTodos = true;
            int administrador = 0, vendedor = 0, mecanico = 0, animador = 0, web = 0;

            if (TBTitulo.Text == "")
            {
                errorProviderTitulo.SetError(TBTitulo, "Campo obligatorio");
                correcto = false;
                TBTitulo.Focus();
            }
            else
            {
                errorProviderTitulo.Clear();

                if (RTBDescripcion.Text == "")
                {
                    errorProviderDescripcion.SetError(RTBDescripcion, "Campo obligatorio");
                    correcto = false;
                    RTBDescripcion.Focus();
                }
                else
                {
                    errorProviderDescripcion.Clear();
                    if (CBTodos.Checked)
                    {
                        administrador = 1; vendedor = 1; mecanico = 1; animador = 1; web = 0;
                    }
                    else
                    {
                        gbTodos = false;
                        if (CBAdministrador.Checked)
                        {
                            administrador = 1;
                        }
                        else
                        {
                            gbAdministrador = false;
                        }

                        if (CBVendedor.Checked)
                        {
                            vendedor = 1;
                        }
                        else
                        {
                            gbVendedor = false;
                        }
                        if (CBMecanico.Checked)
                        {
                            mecanico = 1;
                        }
                        else
                        {
                            gbMecanico = false;
                        }
                        if (CBAnimador.Checked)
                        {
                            animador = 1;
                        }
                        else
                        {
                            gbAnimador = false;
                        }
                        if (CBWeb.Checked)
                        {
                            web = 1;
                        }
                        else
                        {
                            gbWeb = false;
                        }
                    }

                    if (!(gbAdministrador || gbVendedor || gbMecanico || gbAnimador || gbWeb || gbTodos))
                    {
                        errorProviderTipo.SetError(GBTipo, "Debe seleccionar al menos una opción");
                        correcto = false;
                    }
                }
            }
            if (correcto)
            {
                noticia = new ENNoticias(TBTitulo.Text, RTBDescripcion.Text, validar.FechaCorta(DTPFecha.Value.ToString()) ,administrador, vendedor, mecanico, animador, web);
                noticia.NuevaNoticia();
                MessageBox.Show("Noticia insertada correctamente");
                LimpiarFNoticias();
                MostrarTodasNoticias();
            }
        }

        private void BTSalir_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Realmente desea cerrar la aplicación?", "Cerrar aplicación", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
            {
                Application.Exit();
            }
        }

        private void BTEliminar_Click(object sender, EventArgs e)
        {
            ClaseValidacion validar;
            validar = new ClaseValidacion();
            int administrador = 0, vendedor = 0, mecanico = 0, animador = 0, web = 0;
            if (CBTodos.Checked)
            {
                administrador = 1; vendedor = 1; mecanico = 1; animador = 1; web = 0;
            }
            else
            {
                if (CBAdministrador.Checked)
                {
                    administrador = 1;
                }
                if (CBVendedor.Checked)
                {
                    vendedor = 1;
                }
                if (CBMecanico.Checked)
                {
                    mecanico = 1;
                }
                if (CBAnimador.Checked)
                {
                    animador = 1;
                }
                if (CBWeb.Checked)
                {
                    web = 1;
                }
            }

            noticia = new ENNoticias(TBTitulo.Text, RTBDescripcion.Text, validar.FechaCorta(DTPFecha.Value.ToString()), administrador, vendedor, mecanico, animador, web);
            string resultado = noticia.EliminarNoticia(noticia);

            if (resultado == "")
            {
                MessageBox.Show("Noticia eliminada correctamente.");
                LimpiarFNoticias();
                MostrarTodasNoticias();
            }
            else
            {
                MessageBox.Show(resultado, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                LimpiarFNoticias();
                MostrarTodasNoticias();
            }
        }

        private void DGVNoticias_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            BTEliminar.Enabled = true;
            TBTitulo.Text = DGVNoticias.SelectedCells[1].Value.ToString();
            RTBDescripcion.Text = DGVNoticias.SelectedCells[2].Value.ToString();
            DTPFecha.Text = DGVNoticias.SelectedCells[3].Value.ToString();
            if (DGVNoticias.SelectedCells[4].Value.ToString() == "1" && DGVNoticias.SelectedCells[5].Value.ToString() == "1" && DGVNoticias.SelectedCells[6].Value.ToString() == "1" && DGVNoticias.SelectedCells[7].Value.ToString() == "1")
            {
                CBTodos.Checked = true;
                CBAdministrador.Checked = false;
                CBVendedor.Checked = false;
                CBMecanico.Checked = false;
                CBAnimador.Checked = false;
            }
            else
            {
                CBTodos.Checked = false;
                if (DGVNoticias.SelectedCells[4].Value.ToString() == "1")
                    CBAdministrador.Checked = true;
                else
                    CBAdministrador.Checked = false;
                if (DGVNoticias.SelectedCells[5].Value.ToString() == "1")
                    CBVendedor.Checked = true;
                else
                    CBVendedor.Checked = false;
                if (DGVNoticias.SelectedCells[6].Value.ToString() == "1")
                    CBMecanico.Checked = true;
                else
                    CBMecanico.Checked = false;
                if (DGVNoticias.SelectedCells[7].Value.ToString() == "1")
                    CBAnimador.Checked = true;
                else
                    CBAnimador.Checked = false;
                if (DGVNoticias.SelectedCells[8].Value.ToString() == "1")
                    CBWeb.Checked = true;
                else
                    CBWeb.Checked = false;
            }
        }

        private void BTModificar_Click(object sender, EventArgs e)
        {
            ClaseValidacion validar;
            validar = new ClaseValidacion();
            int administrador = 0, vendedor = 0, mecanico = 0, animador = 0, web = 0;
            bool correcto = true, gbAdministrador = true, gbVendedor = true, gbMecanico = true, gbAnimador = true, gbWeb = true, gbTodos = true;

            string not = DGVNoticias.SelectedCells[1].Value.ToString();


            if (TBTitulo.Text == "")
            {
                errorProviderTitulo.SetError(TBTitulo, "Campo obligatorio");
                correcto = false;
                TBTitulo.Focus();
            }
            else
            {
                errorProviderTitulo.Clear();

                if (RTBDescripcion.Text == "")
                {
                    errorProviderDescripcion.SetError(RTBDescripcion, "Campo obligatorio");
                    correcto = false;
                    RTBDescripcion.Focus();
                }
                else
                {
                    errorProviderDescripcion.Clear();
                    if (CBTodos.Checked)
                    {
                        administrador = 1; vendedor = 1; mecanico = 1; animador = 1; web = 0;
                    }
                    else
                    {
                        gbTodos = false;
                        if (CBAdministrador.Checked)
                        {
                            administrador = 1;
                        }
                        else
                        {
                            gbAdministrador = false;
                        }

                        if (CBVendedor.Checked)
                        {
                            vendedor = 1;
                        }
                        else
                        {
                            gbVendedor = false;
                        }
                        if (CBMecanico.Checked)
                        {
                            mecanico = 1;
                        }
                        else
                        {
                            gbMecanico = false;
                        }
                        if (CBAnimador.Checked)
                        {
                            animador = 1;
                        }
                        else
                        {
                            gbAnimador = false;
                        }
                        if (CBWeb.Checked)
                        {
                            web = 1;
                        }
                        else
                        {
                            gbWeb = false;
                        }
                    }

                    if (!(gbAdministrador || gbVendedor || gbMecanico || gbAnimador || gbWeb || gbTodos))
                    {
                        errorProviderTipo.SetError(GBTipo, "Debe seleccionar al menos una opción");
                        correcto = false;
                    }
                }
            }
            if (correcto)
            {
                noticia = new ENNoticias(TBTitulo.Text, RTBDescripcion.Text, validar.FechaCorta(DTPFecha.Value.ToString()), administrador, vendedor, mecanico, animador, web);
                string resultado = noticia.ModificarNoticia(noticia);
                if (resultado == "")
                {
                    MessageBox.Show("Noticia modificada correctamente.");
                    LimpiarFNoticias();
                    MostrarTodasNoticias();
                }
                else
                {
                    MessageBox.Show(resultado, "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    LimpiarFNoticias();
                    MostrarTodasNoticias();
                }
            }
        }

        private void BTBuscar_Click(object sender, EventArgs e)
        {
            
            DataSet resultado = new DataSet();
            ClaseValidacion validar;
            validar = new ClaseValidacion();
            int encontrados = 0;
            int administrador = 0, vendedor = 0, mecanico = 0, animador = 0, web = 0;

            if (CBTodos.Checked)
            {
                administrador = 1; vendedor = 1; mecanico = 1; animador = 1; web = 0;
            }
            else
            {
                if (CBAdministrador.Checked)
                {
                    administrador = 1;
                }
                if (CBVendedor.Checked)
                {
                    vendedor = 1;
                }
                if (CBMecanico.Checked)
                {
                    mecanico = 1;
                }
                if (CBAnimador.Checked)
                {
                    animador = 1;
                }
                if (CBWeb.Checked)
                {
                    web = 1;
                }
            }

            noticia = new ENNoticias();
            resultado = noticia.BuscarNoticia(TBTitulo.Text, RTBDescripcion.Text,validar.FechaCorta(DTPFecha.Value.ToString()), administrador, vendedor, mecanico, animador, web);
            DGVNoticias.DataSource = resultado.Tables["Noticias"].DefaultView;
            DGVNoticias.ColumnHeadersDefaultCellStyle.Font = new Font("Tahoma", 10, FontStyle.Bold);
            DGVNoticias.DefaultCellStyle.Font = new Font("Tahoma", 11);
            DGVNoticias.Columns[0].Visible = false;
            DGVNoticias.Columns[1].HeaderText = "Titulo";
            DGVNoticias.Columns[1].Width = 200;
            DGVNoticias.Columns[2].HeaderText = "Descripcion";
            DGVNoticias.Columns[2].Width = 750;
            DGVNoticias.Columns[3].HeaderText = "Fecha";
            DGVNoticias.Columns[3].Width = 100;
            DGVNoticias.Columns[4].Visible = false;
            DGVNoticias.Columns[5].Visible = false;
            DGVNoticias.Columns[6].Visible = false;
            DGVNoticias.Columns[7].Visible = false;
            DGVNoticias.Columns[8].Visible = false;
            DGVNoticias.Columns[9].Visible = false;
            LTotalNoticias.Text = "Nº Total de noticias : " + resultado.Tables[0].Rows.Count.ToString();
        }
    }
}
